/*
 *
 *  * Copyright 2021 KubeClipper Authors.
 *  *
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *     http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 */

package kc

import (
	"context"
	"encoding/json"

	"github.com/kubeclipper/kubeclipper/pkg/authentication/oauth"
)

const (
	loginPath = "/oauth/login"
)

func (cli *Client) Login(ctx context.Context, body LoginRequest) (*oauth.Token, error) {
	serverResp, err := cli.post(ctx, loginPath, nil, body, JSONContentTypeHeader)
	defer ensureReaderClosed(serverResp)
	if err != nil {
		return nil, err
	}
	token := oauth.Token{}
	err = json.NewDecoder(serverResp.body).Decode(&token)
	return &token, err
}
